home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 4 / Amiga Tools 4.iso / tools / internet-tools / connect-line / cl / devkit / c / examples / pmbs2cl / board.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-10  |  3.3 KB  |  142 lines

  1. //
  2. // Prometheus <-> Connectline Konverter, board.c
  3. // 
  4. // Copyright 1995 by Mathias Mischler
  5. //
  6.  
  7. #include "all.h"
  8.  
  9. char *fgetsterm ( BPTR file, char *str, ULONG len )
  10. {
  11. char *dest = str;
  12.  
  13.     if ( !str ) return NULL;
  14.     while ( len && ((*dest) = FGetC ( file )) )
  15.     {
  16.         dest++; len--;
  17.     }
  18.     return str;
  19. }
  20.  
  21.  
  22. //
  23. // ConvertPMBSBoard
  24. // 
  25.  
  26. void ConvertPMBSBoard ( void ) 
  27. {
  28. BPTR file = Open ( PMBSBoardList, MODE_OLDFILE );
  29. LONG i;
  30. WORD w;
  31. char brettname [ 42 ], pfad [ 82 ], betreuer [ 22 ];
  32. char kommentar [ 82 ], l1 [ 256 ];
  33. char verteiler [ 1024 ], realbrettname [ 256 ];
  34. UWORD maxupload, rate, maxeintraege, maxalter, maxkb;
  35. ULONG brettflags;
  36. char brettpfad [ 256 ];
  37. APTR board;
  38. char *p, *r;
  39.  
  40.   CLP_GetPrefs ( CLMSGDB_PREFSID, CLMSGDB_SUBID_BOARD, brettpfad, 255, NULL ); 
  41.  
  42.     if ( !file )
  43.     {
  44.         PutStr ( "Fehler: Kann Brettliste " PMBSBoardList " nicht öffnen.\n" );
  45.         return;
  46.     }
  47.  
  48.     CLB_LoadList ();    // Laden, wenn noch nicht vorhanden
  49.     CLB_LockList ( TRUE );     // exclusiv reservieren
  50.  
  51.     // Kennung (?) überspringen
  52.     FRead ( file, &w, 2, 1 );
  53.  
  54.     PutStr ( "Scanne Brettliste:\n" );
  55.  
  56.     // Strukturgröße
  57.     while ( FRead ( file, &w, 2, 1 ) > 0 )
  58.     {
  59.         if ( !w )
  60.         {
  61.             while ( ( i = FGetC ( file ) ) == 0 ); // ??? Martin ???
  62.             if ( i < 0 ) break;
  63.         }
  64.  
  65.         // Feste Brettdaten einlesen
  66.         FRead ( file, brettname, 40, 1 );
  67.         FRead ( file, pfad, 80, 1 );
  68.         FRead ( file, betreuer, 20, 1 );
  69.         FRead ( file, l1, 20, 1 ); // Passwort
  70.         FRead ( file, kommentar, 80, 1 );
  71.         FRead ( file, l1, 62, 1 ); // Gruppen
  72.  
  73.         // Brettwerte einlesen / ignorieren
  74.         FRead ( file, &i, 4, 1 ); // Letzter Eintrag
  75.         FRead ( file, &i, 4, 1 ); // Akt. Datum
  76.  
  77.         FRead ( file, &maxupload, 2, 1 );
  78.         FRead ( file, &rate, 2, 1 ); if ( rate == 100 ) rate = 0;
  79.         FRead ( file, &maxeintraege, 2, 1 );
  80.         FRead ( file, &maxalter, 2, 1 ); 
  81.         FRead ( file, &maxkb, 2, 1 );
  82.  
  83.         FRead ( file, &w, 2, 1 ); // Kopfnummer (?)
  84.         FRead ( file, &brettflags, 4, 1 ); // Brettflags (no doks): maybe later
  85.  
  86.         fgetsterm ( file, realbrettname, 254 ); // Ganzer Brettname (!)
  87.         fgetsterm ( file, verteiler, 1023 ); // Verteilerstring ( {<vert>'|'} )
  88.  
  89.         if ( realbrettname [ 0 ] == '/' )
  90.             memmove ( realbrettname, realbrettname + 1, strlen ( realbrettname ) + 1 );
  91.  
  92.         if ( CLB_FindBrett ( realbrettname ) )
  93.         {
  94.             Printf ( "Brett %s ist bereits im CL-System eingetragen.\n", realbrettname );
  95.             continue;
  96.         }
  97.         else
  98.         {
  99.             // Eintragen
  100.             Printf ( "Trage Brett %s ein.\n", realbrettname );
  101.  
  102.             // Pfad berechnen
  103.             strcpy ( l1, brettpfad ); AddPart ( l1, realbrettname, 255 );
  104.  
  105.             board = CLB_NewObject ( realbrettname, FALSE,
  106.                 CLBA_PATH, l1,
  107.                 CLBA_ADMIN, betreuer,
  108.                 CLBA_HOLD_KB, (ULONG) maxkb,
  109.                 CLBA_HOLD_DAYS, (ULONG) maxalter,
  110.                 CLBA_PRI, 99,
  111.                 CLBA_ABOUT, kommentar,
  112.                 CLBA_MAPS_ALLOWED, TRUE,
  113.                 CLBA_AUTOENTRY, TRUE,
  114.                 CLBA_REALNAME, TRUE
  115.                 );
  116.  
  117.             if ( !board ) 
  118.             {
  119.                 PutStr ( "Fehler beim Anlegen des Brettes aufgetreten.\nBitte Connectline Preferences überprüfen.\n" );
  120.                 continue;
  121.             }
  122.  
  123.             verteiler [ strlen ( verteiler ) + 1 ] = 0; // Doppelt Terminieren             
  124.             p = verteiler;
  125.             while ( strlen ( p ) )
  126.             {
  127.                 r = strchr ( p, '|' );
  128.                 if ( r ) *r = 0;
  129.                 CLB_AddBox ( board, p );
  130.                 p = r + 1;
  131.             }
  132.         }
  133.     }
  134.  
  135.     Close ( file );
  136.  
  137.     CLB_UnlockList ();    // Brettlist freigeben
  138.     CLB_SaveList ();    // Und auch abspeichern, jetzt, wo es wieder geht ;)    
  139.  
  140.     PutStr ( "Brettliste übertragen.\n\n" );
  141. }
  142.